package com.jt.controller;

import com.jt.pojo.User;
import com.jt.service.UserService;
import com.jt.vo.PageResult;
import com.jt.vo.SysResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author 刘昱江
 * 时间 2021/5/11
 */
@RestController
@CrossOrigin
@RequestMapping("/user")//抽取公共的请求路径
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/hello")
    public List<User> hello(){

        return userService.findAll();
    }

    /*用户登录校验   类型   POST
    * URL:/user/login
    * 参数: username/password   JSON串
    * 返回值:  SysResult对象,data的String类型的信息  token
    *
    * */
//    @PostMapping("/login")
//    public SysResult login(@RequestBody User user){
//        //.根据用户名和密码校验,返回token  Serviice层中完成
//        String token =userService.login(user);
//        //2.token  有值业务正确   null  业务失败
//        if(token == null){
//            return  SysResult.fail();
//        }
//        return  SysResult.success(token);
//    }
    @PostMapping("/login")
    public  SysResult login(@RequestBody User user){
        String token = userService.login(user);
        if (token==null){
            return SysResult.fail();
        }
        return SysResult.success(token);
    }


    /*
    * 业务:根据ID查询用户信息
    * URL: /user/{id}  restFul结构
    * 参数:id
    * 返回值:SysResult
    * */
    @GetMapping("{id}")
    public  SysResult getUserById(@PathVariable  Integer id){
        User user =userService.getUserById(id);
        return  SysResult.success(user);
    }

    @DeleteMapping("{id}")
    public  SysResult deleteUserById(@PathVariable Integer id){
      try {
          userService.deleteUserById(id);

        return  SysResult.success();
      }catch (Exception e){
          e.printStackTrace();;
          return SysResult.fail();
      }
    }



    /*
    * 业务:实现用户列表的分页查询
    * 类型:GET
    * URL:/user/list
    * 参数:  PageResult对象进行接收,传递了3个参数
    * 返回值:SysResult对象(PageResult对象)  返回5个参数
    *
    * */

   /* @GetMapping("/list")
    public SysResult getUserList(PageResult pageResult){
        //通过业务处理,  获取总数/分页后的结果
        pageResult = userService.getUserList(pageResult);
        return  SysResult.success(pageResult);
    }
*/

    @GetMapping("/list")
   public SysResult getUserList(PageResult pageResult){
        pageResult=userService.getUserList(pageResult);
        return  SysResult.success(pageResult);
    }

    /*
    * 业务:修改用户状态
    * 类型:put
    * url:/user/status/{id}/{status}
    * 参数:id主键  status  状态信息   true/false
    * 返回值;   SysResult对象   没有业务参数
    *
    * */
    @PutMapping("/status/{id}/{status}")//restFul风格,
    public SysResult updateStatus (User user){//用对象直接接参,不需要@PathVariableInteger id,....
        userService.updateStatus(user);
        return  SysResult.success();//没有业务参数,可以不返回参数
    }

    @PutMapping("/updateUser")
    public SysResult updateUser (@RequestBody User user){
        userService.updateUser(user);
        return  SysResult.success();
    }



}








